/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package juegocartas.mus;

import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author jbp
 */
public class UtilidadesMus {

    public static int obtenerPuntosJuego(GrupoCartas grupoCartas) {
        List<Carta> cartas = grupoCartas.getCartas();
        int suma = 0;
        for (Carta carta : cartas) {
            suma += getValorCartaJuego(carta);
        }
        return suma;
    }

    public static boolean formanPares(Carta carta1, Carta carta2) {
        return getValorCarta(carta1) == getValorCarta(carta2);
    }

    /**
     * Calcula el numero de cartas emparejadas.
     * 0 = no hay pares.
     * 1 = es imposible
     */
    public static int calcularCartasEmparejadas(GrupoCartas grupoCartas) {
        int cartasEmparejadas = 0;
        List<Carta> cartas = grupoCartas.getCartas();
        for (int i = 0; i < cartas.size(); i++) {
            for (int j = i + 1; j < cartas.size(); j++) {
                Carta carta1 = cartas.get(i);
                Carta carta2 = cartas.get(j);
                if (carta1 == null || carta2 == null) {
                }
                if (formanPares(carta1, carta2)) {
                    cartasEmparejadas++;
                }
            }
        }
        return 0;
    }

    public static int getValorCarta(Carta carta) {
        int valor = carta.getNumero();
        switch (valor) {
            case 2:
                valor = 1;
                break;
            case 3:
                valor = 12;
                break;
        }

        return valor;
    }

    public static int getValorCartaJuego(Carta carta) {
        int valor = carta.getNumero();
        switch (valor) {
            case 2:
                valor = 1;
                break;
            case 3:
                valor = 10;
                break;
            case 11:
                valor = 10;
                break;
            case 12:
                valor = 10;
                break;
        }
        return valor;
    }

    /**
     * Devuelve el valor de la media que tiene. Si no tiene media, devuelve 0
     */
    public static int obtenerValorMedia(GrupoCartas grupoCartas) {
        List<Carta> cartas = grupoCartas.getCartas();

        for (int i = 0; i < cartas.size(); i++) {
            int cartasRepetidas = 0;
            Carta carta = cartas.get(i);
            int valor = getValorCarta(carta);
            for (int j = 0; j < cartas.size(); j++) {
                Carta cartaSiguiente = cartas.get(j);
                if (valor == getValorCarta(cartaSiguiente)) {
                    cartasRepetidas++;
                }
            }
            if (cartasRepetidas == 3) {
                return valor;
            }
        }
        return 0;
    }

    public static List<Carta> copiarListadoCartas(List<Carta> cartas) {
        List<Carta> copia = new ArrayList<Carta>();
        for (Carta carta : cartas) {
            copia.add((Carta) carta.clone());
        }
        return copia;
    }
}
